package com.stone.inventory.sharding.infra.algorithm;

/**
 * 分片算法
 *
 * @author Mr_wenpan@163.com 2021-07-26
 */

public interface ShardingAlgorithm<T> {

    /**
     * 获取目标表名称
     *
     * @param t 分片数据
     * @return 表名称
     */
    String getTargetTableByShardingValue(T t);

    /**
     * 获取目标表名称
     *
     * @param id 分片数据
     * @return 表名称
     */
    String getTargetTableByShardingId(Long id);

    /**
     * 返回分片的逻辑表名称
     *
     * @return 逻辑表名称
     */
    String logicTableName();

}
